如何用Python获取微信好友信息,让你更加了解你的朋友 您所在的位置:网站首页 python 连接微信 如何用Python获取微信好友信息,让你更加了解你的朋友

如何用Python获取微信好友信息,让你更加了解你的朋友

#如何用Python获取微信好友信息,让你更加了解你的朋友| 来源: 网络整理| 查看: 265

前言

文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: 吴小鹏

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

「itchat」(开源的微信个人接口)来获取一些公开的好友信息,使用itchat.get_friends(),

我们可以获取微信好友头像、性别、省份、城市、年龄等具体信息。

好友头像

我们先拉取好友头像试一下,「itchat」里的get_head_img可以获取每个好友的头像:

def headImg(): itchat.login() friends = itchat.get_friends(update=True) # itchat.get_head_img() 获取到头像二进制,并写入文件,保存每张头像 for count, f in enumerate(friends): # 根据userName获取头像 img = itchat.get_head_img(userName=f["UserName"]) imgFile = open("photo/" + str(count) + ".jpg", "wb") imgFile.write(img) imgFile.close()

photo文件夹用于保存头像图片,遍历好友列表,根据下标命名头像,到这里可以看到文件夹里已经保存了所有好友的头像。

头像信息比较隐私,就不公布啦~

性别分布

当我们使用「itchat」的get_friends()函数可以获取很多好友信息,包括性别,所以这里只需要将获取到的好友性别信息提取出来制图就可以:

def analysisSex(): itchat.login() friends = itchat.get_friends() sex_count = dict() for f in friends: if f["Sex"] == 1: # man sex_count["man"] = sex_count.get("man", 0) + 1 elif f["Sex"] == 2: # women sex_count["women"] = sex_count.get("women", 0) + 1 else: # unknown sex_count["unknown"] = sex_count.get("unknown", 0) + 1 # 柱状图展示 for i, key in enumerate(sex_count): plt.bar(key, sex_count[key]) plt.savefig("analysisSex.png") #保存图片 plt.ion() plt.close()

结果如下:

个性签名

在获取的好友信息中Signature字段对应着好友的签名,我们直接获取这部分信息,然后保存下来,处理过表情等特殊字符,然后制作词云图。

def AnalysisSignature(): itchat.login() friends = itchat.get_friends(update=True) file = open('AnalysisSignature.txt', 'a', encoding='utf-8') for f in friends: signature = f["Signature"].strip().replace("emoji", "").replace("span", "").replace("class", "") # 正则匹配 rec = re.compile("1f\d+\w*|[/=]") signature = rec.sub("", signature) file.write(signature + "\n")

"stay hungry, stay foolish" "不舍爱与自由"

大家对生活都是积极向上的,希望每个人都能成为更好的自己!

地区分布

为了统计好友的地区分布,所以要用到好友信息的province字段,直接对province进行统计,然后可视化出来得到。

# 省份分析 def analysisProvince(): friends_info = get_friends_info() df = pd.DataFrame(friends_info) province_count = df.groupby('province', as_index=True)['province'].count().sort_values() temp = list(map(lambda x: x if x != '' else '未知', list(province_count.index))) # 画图 page = Page() style = Style(width=1100, height=600) style_middle = Style(width=900, height=500) attr, value = temp, list(province_count) chart1 = Map('好友分布(中国地图)', **style.init_style) chart1.add('', attr, value, is_label_show=True, is_visualmap=True, visual_text_color='#000') page.add(chart1) chart2 = Bar('好友分布柱状图', **style_middle.init_style) chart2.add('', attr, value, is_stack=True, is_convert=True, label_pos='inside', is_legend_show=True, is_label_show=True) page.add(chart2) page.render('analysisProvince.html')

比较明显的一个点是,我们的好友大多来自我们生活过的地方,安徽和上海这两个地区好友数量都明显高于其他省份。

号主户籍安徽,利用城市信息看一下我的朋友都在哪里。

从下面的好友数量来看,号主明显是个安庆人。

你们可以直接修改源码的省份参数,获取你想了解的省份的好友分布。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有